home *** CD-ROM | disk | FTP | other *** search
/ Holt Researcher: American History / Holt Researcher: American History.iso / pc / modules / search.dxr / 00004_menu bank class.ls < prev    next >
Encoding:
Text File  |  2000-01-18  |  7.8 KB  |  307 lines

  1. property pMenuObjList, pBank1List, pBank2List, pBank3List, pPopupIndexList, pOverlaySprites, pHilitableSprites, pPoppedMenu, pSelection, pBankStatusList
  2.  
  3. on getPopup me, channelNum
  4.   if channelNum <= count(pMenuObjList) then
  5.     result = getAt(pMenuObjList, channelNum)
  6.   else
  7.     result = 0
  8.   end if
  9.   return result
  10. end
  11.  
  12. on getPoppedMenu me
  13.   return pPoppedMenu
  14. end
  15.  
  16. on setPoppedMenu me, menuObj
  17.   global gSearchObj
  18.   pPoppedMenu = menuObj
  19.   if objectp(menuObj) then
  20.     disable(getFindButtonObj(gSearchObj))
  21.     disable(getclearAllButtonObj(gSearchObj))
  22.   else
  23.     if (getBankStatus(me, 1) <> #incomplete) and (getBankStatus(me, 2) <> #incomplete) and (getBankStatus(me, 3) <> #incomplete) then
  24.       enable(getFindButtonObj(gSearchObj))
  25.       enable(getclearAllButtonObj(gSearchObj))
  26.     end if
  27.   end if
  28. end
  29.  
  30. on getMenuSelection me, bankNumber, menuKind
  31.   index = getMenuChannel(me, bankNumber, menuKind)
  32.   popupObj = getPopup(me, index)
  33.   selection = getSelection(popupObj)
  34.   return selection
  35. end
  36.  
  37. on getMenuText me, bankNumber, menuKind
  38.   index = getMenuChannel(me, bankNumber, menuKind)
  39.   popupObj = getPopup(me, index)
  40.   menuText = getText(popupObj)
  41.   return menuText
  42. end
  43.  
  44. on getMenuChannel me, bankNumber, menuKind
  45.   case bankNumber of
  46.     1:
  47.       case menuKind of
  48.         #criteria:
  49.           channel = 4
  50.         #selection:
  51.           channel = 6
  52.         #clear:
  53.           channel = 8
  54.       end case
  55.     2:
  56.       case menuKind of
  57.         #andOr:
  58.           channel = 10
  59.         #criteria:
  60.           channel = 12
  61.         #selection:
  62.           channel = 14
  63.         #clear:
  64.           channel = 16
  65.         #add:
  66.           channel = 17
  67.       end case
  68.     3:
  69.       case menuKind of
  70.         #andOr:
  71.           channel = 19
  72.         #criteria:
  73.           channel = 21
  74.         #selection:
  75.           channel = 23
  76.         #clear:
  77.           channel = 25
  78.         #add:
  79.           channel = 26
  80.       end case
  81.   end case
  82.   return channel
  83. end
  84.  
  85. on getMenuObj me, bankNumber, menuKind
  86.   index = getMenuChannel(me, bankNumber, menuKind)
  87.   return getAt(pMenuObjList, index)
  88. end
  89.  
  90. on new me
  91.   pMenuObjList = []
  92.   pPopupIndexList = [4, 6, 10, 12, 14, 19, 21, 23]
  93.   pOverlaySprites = [37, 38, 39, 41, 42, 44, 45, 46]
  94.   pHilitableSprites = [37, 38, 39, 42]
  95.   pSelection = 0
  96.   pBankStatusList = [#inProgress, #hidden, #hidden]
  97.   pBank1List = [4, 6, 8]
  98.   addAt(pMenuObjList, 4, new(script("criteria popup"), [4, 5], 1))
  99.   addAt(pMenuObjList, 6, new(script("selection popup"), [6, 7], 1))
  100.   addAt(pMenuObjList, 8, new(script("clear button"), [8], 1))
  101.   pBank2List = [10, 12, 14, 16, 17]
  102.   addAt(pMenuObjList, 10, new(script("and/or popup"), [10, 11], 2))
  103.   addAt(pMenuObjList, 12, new(script("criteria popup"), [12, 13], 2))
  104.   addAt(pMenuObjList, 14, new(script("selection popup"), [14, 15], 2))
  105.   addAt(pMenuObjList, 16, new(script("clear button"), [16], 2))
  106.   addAt(pMenuObjList, 17, new(script("add button"), [17], 2))
  107.   pBank3List = [19, 21, 23, 25, 26]
  108.   addAt(pMenuObjList, 19, new(script("and/or popup"), [19, 20], 3))
  109.   addAt(pMenuObjList, 21, new(script("criteria popup"), [21, 22], 3))
  110.   addAt(pMenuObjList, 23, new(script("selection popup"), [23, 24], 3))
  111.   addAt(pMenuObjList, 25, new(script("clear button"), [25], 3))
  112.   addAt(pMenuObjList, 26, new(script("add button"), [26], 3))
  113.   return me
  114. end
  115.  
  116. on Inscope me
  117.   pSelection = 0
  118.   repeat with n in pOverlaySprites
  119.     puppetSprite(n, 1)
  120.   end repeat
  121.   repeat with popupObj in pMenuObjList
  122.     if objectp(popupObj) then
  123.       Inscope(popupObj)
  124.     end if
  125.   end repeat
  126.   case getBankStatus(me, 2) of
  127.     #hidden:
  128.       hideBank(me, 2)
  129.     #add:
  130.       showMe(getMenuObj(me, 2, #add))
  131.   end case
  132.   case getBankStatus(me, 3) of
  133.     #hidden:
  134.       hideBank(me, 3)
  135.     #add:
  136.       showMe(getMenuObj(me, 3, #add))
  137.   end case
  138. end
  139.  
  140. on outScope me
  141.   if objectp(pPoppedMenu) then
  142.     contract(pPoppedMenu)
  143.   end if
  144.   repeat with n in pOverlaySprites
  145.     puppetSprite(n, 0)
  146.   end repeat
  147.   repeat with popupObj in pMenuObjList
  148.     if objectp(popupObj) then
  149.       outScope(popupObj)
  150.     end if
  151.   end repeat
  152. end
  153.  
  154. on doRollover me
  155.   rolloverSprite = the rollOver
  156.   mLine = the mouseLine
  157.   if getPos(pHilitableSprites, rolloverSprite) > 0 then
  158.     if mLine > 0 then
  159.       memNum = the memberNum of sprite rolloverSprite
  160.       if memNum > 0 then
  161.         if pSelection <> mLine then
  162.           normalColor = color(#paletteIndex, 255)
  163.           hiliteColor = 210
  164.           member(memNum).color = normalColor
  165.           pSelection = mLine
  166.           set the foreColor of line pSelection of field memNum to hiliteColor
  167.         end if
  168.       end if
  169.     end if
  170.   end if
  171. end
  172.  
  173. on getFirstDisabledPopup me
  174.   repeat with menuIndex in pPopupIndexList
  175.     popupObj = getAt(pMenuObjList, menuIndex)
  176.     if isVisible(popupObj) and isdisabled(popupObj) then
  177.       disabledMenuIndex = menuIndex
  178.       disabledPopupObj = popupObj
  179.       exit repeat
  180.     end if
  181.   end repeat
  182.   return disabledPopupObj
  183. end
  184.  
  185. on idleMenuBank me
  186.   global gSearchObj
  187.   if getPoppedMenu(gSearchObj) = 0 then
  188.     popupObj = getFirstDisabledPopup(me)
  189.     if objectp(popupObj) then
  190.       enable(popupObj)
  191.       expand(popupObj)
  192.     else
  193.       if (getBankStatus(me, 1) <> #incomplete) and (getBankStatus(me, 2) <> #incomplete) and (getBankStatus(me, 3) <> #incomplete) then
  194.         object = getFindButtonObj(gSearchObj)
  195.         if disabled(object) then
  196.           enable(object)
  197.         end if
  198.         object = getclearAllButtonObj(gSearchObj)
  199.         if disabled(object) then
  200.           enable(object)
  201.         end if
  202.       end if
  203.     end if
  204.   end if
  205. end
  206.  
  207. on getBankStatus me, bankNum
  208.   return getAt(pBankStatusList, bankNum)
  209. end
  210.  
  211. on setBankStatus me, bankNum, status
  212.   setAt(pBankStatusList, bankNum, status)
  213. end
  214.  
  215. on hideBank me, bankNum
  216.   case bankNum of
  217.     1:
  218.       bankList = pBank1List
  219.     2:
  220.       bankList = pBank2List
  221.     3:
  222.       bankList = pBank3List
  223.   end case
  224.   repeat with popupIndex in bankList
  225.     popupObj = getAt(pMenuObjList, popupIndex)
  226.     if objectp(popupObj) then
  227.       hideMe(popupObj)
  228.     end if
  229.   end repeat
  230.   setBankStatus(me, bankNum, #hidden)
  231. end
  232.  
  233. on showBank me, bankNum
  234.   case bankNum of
  235.     1:
  236.       bankList = pBank1List
  237.     2:
  238.       bankList = pBank2List
  239.     3:
  240.       bankList = pBank3List
  241.   end case
  242.   repeat with popupIndex in bankList
  243.     popupObj = getAt(pMenuObjList, popupIndex)
  244.     if objectp(popupObj) then
  245.       showMe(popupObj)
  246.     end if
  247.   end repeat
  248.   setBankStatus(me, bankNum, #inProgress)
  249. end
  250.  
  251. on deleteBank me, bankNum
  252.   case getBankStatus(me, bankNum) of
  253.     #hidden:
  254.       nothing()
  255.     #add:
  256.       hideMe(getMenuObj(me, bankNum, #add))
  257.       setBankStatus(me, bankNum, #hidden)
  258.     #complete, #inProgress:
  259.       if bankNum = 3 then
  260.         clearBank(me, bankNum)
  261.         hideBank(me, bankNum)
  262.       else
  263.         case getBankStatus(me, bankNum + 1) of
  264.           #hidden:
  265.             clearBank(me, bankNum)
  266.             if bankNum > 1 then
  267.               hideBank(me, bankNum)
  268.             end if
  269.           #add:
  270.             hideMe(getMenuObj(me, bankNum + 1, #add))
  271.             setBankStatus(me, bankNum + 1, #hidden)
  272.             clearBank(me, bankNum)
  273.             if bankNum > 1 then
  274.               hideBank(me, bankNum)
  275.             end if
  276.           #complete, #inProgress:
  277.             copyBank(me, bankNum + 1, bankNum)
  278.             deleteBank(me, bankNum + 1)
  279.         end case
  280.       end if
  281.   end case
  282. end
  283.  
  284. on clearBank me, bankNum
  285.   if bankNum > 1 then
  286.     clear(getMenuObj(me, bankNum, #andOr))
  287.   end if
  288.   clear(getMenuObj(me, bankNum, #criteria))
  289.   clear(getMenuObj(me, bankNum, #selection))
  290.   setBankStatus(me, bankNum, #inProgress)
  291. end
  292.  
  293. on copyBank me, srcBank, destBank
  294.   setBankStatus(me, destBank, getBankStatus(me, srcBank))
  295.   if (srcBank <> 1) and (destBank <> 1) then
  296.     copyMenu(me, srcBank, destBank, #andOr)
  297.   end if
  298.   copyMenu(me, srcBank, destBank, #criteria)
  299.   copyMenu(me, srcBank, destBank, #selection)
  300. end
  301.  
  302. on copyMenu me, srcBank, destBank, menuKind
  303.   srcPopupObj = getMenuObj(me, srcBank, menuKind)
  304.   destPopupObj = getMenuObj(me, destBank, menuKind)
  305.   clone(destPopupObj, srcPopupObj)
  306. end
  307.